package com.caseprocessing.model;

import java.util.List;

/**
 * 文档元数据
 * 包含案卷的结构信息、质量信息、完整性检查等
 */
public class DocumentMetadata {
    
    // 基础文档信息
    private String scanDate;
    private String agency;
    private String caseNumber;
    private long fileSize;
    private int scanResolution;
    private String pageFormat;
    
    // 案卷结构信息
    private List<Integer> directoryPages;
    private Integer coverPage;
    private Integer backupTablePage;
    private int totalDocuments;
    private PageRange documentPageRange;
    
    // 质量评估信息
    private double overallOcrConfidence;
    private double averageImageQuality;
    private List<PageQualityIssue> pageQualityIssues;
    
    // 时间范围信息
    private CaseTimeRange caseTimeRange;
    
    // 完整性检查
    private CompletenessCheck completenessCheck;
    
    // 技术参数
    private ProcessingInfo processingInfo;
    
    // Getters and Setters
    public String getScanDate() { return scanDate; }
    public void setScanDate(String scanDate) { this.scanDate = scanDate; }
    
    public String getAgency() { return agency; }
    public void setAgency(String agency) { this.agency = agency; }
    
    public String getCaseNumber() { return caseNumber; }
    public void setCaseNumber(String caseNumber) { this.caseNumber = caseNumber; }
    
    public long getFileSize() { return fileSize; }
    public void setFileSize(long fileSize) { this.fileSize = fileSize; }
    
    public int getScanResolution() { return scanResolution; }
    public void setScanResolution(int scanResolution) { this.scanResolution = scanResolution; }
    
    public String getPageFormat() { return pageFormat; }
    public void setPageFormat(String pageFormat) { this.pageFormat = pageFormat; }
    
    public List<Integer> getDirectoryPages() { return directoryPages; }
    public void setDirectoryPages(List<Integer> directoryPages) { this.directoryPages = directoryPages; }
    
    public Integer getCoverPage() { return coverPage; }
    public void setCoverPage(Integer coverPage) { this.coverPage = coverPage; }
    
    public Integer getBackupTablePage() { return backupTablePage; }
    public void setBackupTablePage(Integer backupTablePage) { this.backupTablePage = backupTablePage; }
    
    public int getTotalDocuments() { return totalDocuments; }
    public void setTotalDocuments(int totalDocuments) { this.totalDocuments = totalDocuments; }
    
    public PageRange getDocumentPageRange() { return documentPageRange; }
    public void setDocumentPageRange(PageRange documentPageRange) { this.documentPageRange = documentPageRange; }
    
    public double getOverallOcrConfidence() { return overallOcrConfidence; }
    public void setOverallOcrConfidence(double overallOcrConfidence) { this.overallOcrConfidence = overallOcrConfidence; }
    
    public double getAverageImageQuality() { return averageImageQuality; }
    public void setAverageImageQuality(double averageImageQuality) { this.averageImageQuality = averageImageQuality; }
    
    public List<PageQualityIssue> getPageQualityIssues() { return pageQualityIssues; }
    public void setPageQualityIssues(List<PageQualityIssue> pageQualityIssues) { this.pageQualityIssues = pageQualityIssues; }
    
    public CaseTimeRange getCaseTimeRange() { return caseTimeRange; }
    public void setCaseTimeRange(CaseTimeRange caseTimeRange) { this.caseTimeRange = caseTimeRange; }
    
    public CompletenessCheck getCompletenessCheck() { return completenessCheck; }
    public void setCompletenessCheck(CompletenessCheck completenessCheck) { this.completenessCheck = completenessCheck; }
    
    public ProcessingInfo getProcessingInfo() { return processingInfo; }
    public void setProcessingInfo(ProcessingInfo processingInfo) { this.processingInfo = processingInfo; }
}